#  引入合适的包
from tabulate import tabulate
import numpy as np
from skimage import io

#  读入RGB图:  dog.jpg
img = io.imread("dog.jpg")

#  把图像变成2维结构
#  该结构只有3列，分别对应R,  G,  B三个通道
img = img.reshape(-1, 3)

rgb_max = np.max(img, axis=0)  # 沿着0轴计算RGB最大值列表

rgb_min = np.min(img, axis=0)  # 沿着0轴计算RGB最小值列表

rgb_mean = np.mean(img, axis=0)  # 沿着0轴计算RGB平均值列表

rgb_std = np.std(img, axis=0)  # 沿着0轴计算RGB标准正差列表

rgb_25p = np.percentile(img, 25, axis=0)  # 沿着0轴计算RGB值排序后  25%  值列表

rgb_50p = np.percentile(img, 50, axis=0)  # 沿着0轴计算RGB值排序后  50%  值(中位数)列表

rgb_75p = np.percentile(img, 75, axis=0)  # 沿着0轴计算RGB值排序后  75%  值列表

result = [
    ['meta', 'R', 'G', 'B'],
    ['max'] + rgb_max.tolist(),
    ['min'] + rgb_min.tolist(),
    ['mean'] + rgb_mean.tolist(),
    ['std'] + rgb_std.tolist(),
    ['25%'] + rgb_25p.tolist(),
    ['50%'] + rgb_50p.tolist(),
    ['75%'] + rgb_75p.tolist()
]

print(tabulate(result, tablefmt='grid'))  # 打印结果
